FPGAs and ASICs are known electronic components or Achips@ that are customised by the electronic engineers to provide some required chip functionality. FPGAs typically comprise an array of low-level programmable logic function blocks and a programmable routing-matrix which provides interconnections between these blocks. Connection between two parts of such a chip design is provided by routing a logic signal from a source part of the chip to a destination part. The routing resource used is then dedicated to providing this particular interconnection. It cannot be used for anything else unless the FPGA device is reprogrammed, in which case the original signal no longer uses that routing resource.
ASICs typically comprise an array of logic gates. The interconnections between the gates are provided by metal or polysilicon interconnection layers determined when the device is manufactured. Interconnections are therefore fixed at the time of manufacture and cannot be altered.
As the number of logic gates (or blocks) that can be integrated onto a single chip increases, so the number of interconnection layers has to increase to provide adequate routing resource. This increases the cost of the device. The burden on the design tools that place and route the required logic onto the gate and routing resources of the chip also increases.
In view of the above, there is a need for an FPGA and ASIC architecture which can directly support large designs, providing an appropriate level of interconnection, without having to increase the number of interconnection layers and without placing additional burden on the place and route tools.
“Objects” are known constructs used in object-oriented software analysis, design and programming. An object encapsulates data (which represent the state of the object) and the operations that modify or report the values of the data variables within the object. The operations form the interface to the object. A system is typically made up of many objects which interact to provide the required system level functionality. Each object will supply services (perform operations) requested by some other objects and further request services of other objects. The requests for services and the results of these services are communicated between objects by passing messages from one object to another. Object-oriented software design has been successful for software developments because the objects used reflect those in the real world, providing an intuitive basis for abstraction and reasoning about complex systems. There is a need for a new chip-architecture that directly supports the implementation of objects in hardware.
It is an objective of the present invention to seek to obviate or at least mitigate the aforementioned problems in the prior art.
It is also an objective of the present invention to seek to address the aforementioned needs in the art.